﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Inmobiliaria.Presenters.ViewInterfaces;
using Inmobiliaria.Presenters.WFPresenters;
using Inmobiliaria.Exceptions;
using Inmobiliaria.Services.Core.DTO;
using System.Web.UI.HtmlControls;
using System.Windows.Forms;
using System.IO;
using System.Drawing;

public partial class PublicarInmobiliariaInmueblesWF : System.Web.UI.Page, IView, IViewRegistroInmuebleInmobiliaria
{
    private RegistroInmuebleInmobiliariaPresenter _presenter;
    protected void Page_Load(object sender, EventArgs e)
    {
        _presenter = new RegistroInmuebleInmobiliariaPresenter(this);
        IMensajeDeDialogoPregunta mensajeDeDialogo = (IMensajeDeDialogoPregunta)this.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta");
        mensajeDeDialogo.Presenter = _presenter;
        if (!IsPostBack)
        {
            cmbProvincias.SelectedIndexChanged += new EventHandler(cmbProvincias_SelectedIndexChanged);
            cmbTipoDeInmueble.SelectedIndexChanged += new EventHandler(cmbTipoDeInmueble_SelectedIndexChanged);
            cmbLocalidad.SelectedIndexChanged += new EventHandler(cmbLocalidad_SelectedIndexChanged);
            _presenter.InitView(Request.QueryString);
            // Limpiar();
        }
    }
    protected void btnRegistrar_Click(object sender, EventArgs e)
    {
        try
        {
            _presenter.RegistrarInmuebleInmobiliaria();
            Limpiar();
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
    protected void cmbProvincias_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (!String.IsNullOrEmpty(cmbProvincias.SelectedValue))
            {

                _presenter.CargarComboLocalidades();
                this.cmbLocalidad.Enabled = true;
            }
            else
            {
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    protected void cmbLocalidad_SelectedIndexChanged(object sender, EventArgs e)
    {
        try
        {
            if (!String.IsNullOrEmpty(cmbLocalidad.SelectedValue))
            {

                _presenter.CargarComboBarrio();
                this.cmbBarrio.Enabled = true;
            }
            else
            {
            }
        }
        catch (Exception ex)
        {
            throw ex;
        }
    }
    public void cmbTipoDeInmueble_SelectedIndexChanged(object sender, EventArgs e)
    {
        if (cmbTipoDeInmueble.Text != "3")
        {
            HabilitarCamposTipoInmueble();
        }
        else
        {
            DeshabilitarCheck();
        }

    }
    private void HabilitarCamposTipoInmueble()
    {
        lblHabitaciones.Visible = true;
        lblBaño.Visible = true;
        cmbHabitaciones.Enabled = true;
        cmbBaño.Enabled = true;
        chcAgua.Enabled = true;
        chcAsfalto.Enabled = true;
        chcBalcon.Enabled = true;
        chcCloacas.Enabled = true;
        chcCocina.Enabled = true;
        chcComedor.Enabled = true;
        chcGas.Enabled = true;
        chcJardin.Enabled = true;
        chcLiving.Enabled = true;
        chcLuz.Enabled = true;
        chcPatio.Enabled = true;
        chcPiscina.Enabled = true;
        chcQuincho.Enabled = true;
        chcTelefono.Enabled = true;
        chcTerraza.Enabled = true;
    }
    private void DeshabilitarCheck()
    {
        cmbHabitaciones.Enabled = false;
        cmbBaño.Enabled = false;
        chcBalcon.Enabled = false;
        chcCocina.Enabled = false;
        chcComedor.Enabled = false;
        chcJardin.Enabled = false;
        chcLiving.Enabled = false;
        chcPatio.Enabled = false;
        chcPiscina.Enabled = false;
        chcQuincho.Enabled = false;
        chcTerraza.Enabled = false;
    }
    #region IViewPersonaWUC Members
    public string CodigoInmobiliaria
    {
        get
        {
            return txtCodigoInmobiliaria.Text;
        }
    }
    public int Localidad
    {
        get
        {
            int id = int.Parse(cmbLocalidad.Text);
            return id;
        }
    }
    public List<DtoLocalidades> Localidades
    {
        set
        {
            cmbLocalidad.Items.Clear();
            cmbLocalidad.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoLocalidades item in value)
            {
                cmbLocalidad.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public int Barrio
    {
        get
        {
            int id = int.Parse(cmbBarrio.Text);
            return id;
        }
    }
    public List<DtoBarrios> Barrios
    {
        set
        {
            cmbBarrio.Items.Clear();
            cmbBarrio.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoBarrios item in value)
            {
                cmbBarrio.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public int Provincia
    {
        get
        {
            int id = int.Parse(cmbProvincias.Text);
            return id;
        }
    }
    public List<DtoProvincias> Provincias
    {
        set
        {
            cmbProvincias.Items.Clear();
            cmbProvincias.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoProvincias item in value)
            {
                cmbProvincias.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public string Habitacion
    {
        get { return cmbHabitaciones.SelectedValue; }
    }
    public string[] Habitaciones
    {
        set
        {
            cmbHabitaciones.Items.Clear();
            cmbHabitaciones.Items.Add(new ListItem("Seleccione", ""));
            foreach (string item in value)
            {
                cmbHabitaciones.Items.Add(new ListItem(item, item));
            }
        }
    }
    public string Baño
    {
        get { return cmbBaño.SelectedValue; }
    }
    public string[] Baños
    {
        set
        {
            cmbBaño.Items.Clear();
            cmbBaño.Items.Add(new ListItem("Seleccione", ""));
            foreach (string item in value)
            {
                cmbBaño.Items.Add(new ListItem(item, item));
            }
        }
    }
    public int tipoInmueble
    {
        get
        {
            int id = int.Parse(cmbTipoDeInmueble.Text);
            return id;

        }
    }
    public List<DtoTipoInmueble> TipoInmueble
    {
        set
        {
            cmbTipoDeInmueble.Items.Clear();
            cmbTipoDeInmueble.Items.Add(new ListItem("Seleccione", ""));
            foreach (DtoTipoInmueble item in value)
            {
                cmbTipoDeInmueble.Items.Add(new ListItem(item.Nombre, item.Id.ToString()));
            }
        }
    }
    public string Transaccion
    {
        get { return cmbTipoTransaccion.SelectedValue; }
    }
    public string[] Transacciones
    {
        set
        {
            cmbTipoTransaccion.Items.Clear();
            cmbTipoTransaccion.Items.Add(new ListItem("Seleccione", ""));
            foreach (string item in value)
            {
                cmbTipoTransaccion.Items.Add(new ListItem(item, item));
            }
        }
    }
    public string Calle
    {
        get
        {
            return txtCalle.Text;
        }
    }
    public string Altura
    { get { return txtAltura.Text; } }
    public string Lote { get { return txtLote.Text; } }
    public string SuperficieCubierta { get { return txtSuperficieCubierta.Text; } }
    public string ValorInmueble { get { return txtValorInmueble.Text; } }
    public string Living
    {
        get
        {
            if (chcLiving.Checked == true)
            {
                string Living = "SI";
                return Living;
            }
            else
            {
                string Living = "NO";
                return Living;
            }
        }
    }
    public string Comedor
    {
        get
        {
            if (chcComedor.Checked == true)
            {
                string Comedor = "SI";
                return Comedor;
            }
            else
            {
                string Comedor = "NO";
                return Comedor;
            }

        }
    }
    public string Cocina
    {
        get
        {
            if (chcCocina.Checked == true)
            {
                string Cocina = "SI";
                return Cocina;
            }
            else
            {
                string Cocina = "NO";
                return Cocina;
            }

        }
    }
    public string Patio
    {
        get
        {
            if (chcPatio.Checked == true)
            {
                string Patio = "SI";
                return Patio;
            }
            else
            {
                string Patio = "NO";
                return Patio;
            }

        }
    }
    public string Jardin
    {
        get
        {
            if (chcJardin.Checked == true)
            {
                string Jardin = "SI";
                return Jardin;
            }
            else
            {
                string Jardin = "NO";
                return Jardin;
            }

        }
    }
    public string Balcon
    {
        get
        {
            if (chcBalcon.Checked == true)
            {
                string Balcon = "SI";
                return Balcon;
            }
            else
            {
                string Balcon = "NO";
                return Balcon;
            }

        }
    }
    public string Terraza
    {
        get
        {
            if (chcTerraza.Checked == true)
            {
                string Terraza = "SI";
                return Terraza;
            }
            else
            {
                string Terraza = "NO";
                return Terraza;
            }

        }
    }
    public string Quincho
    {
        get
        {
            if (chcQuincho.Checked == true)
            {
                string Quincho = "SI";
                return Quincho;
            }
            else
            {
                string Quincho = "NO";
                return Quincho;
            }

        }
    }
    public string Piscina
    {
        get
        {
            if (chcPiscina.Checked == true)
            {
                string Piscina = "SI";
                return Piscina;
            }
            else
            {
                string Piscina = "NO";
                return Piscina;
            }

        }
    }
    public string Agua
    {
        get
        {
            if (chcAgua.Checked == true)
            {
                string Agua = "SI";
                return Agua;
            }
            else
            {
                string Agua = "NO";
                return Agua;
            }

        }
    }
    public string Luz
    {
        get
        {
            if (chcLuz.Checked == true)
            {
                string Luz = "SI";
                return Luz;
            }
            else
            {
                string Luz = "NO";
                return Luz;
            }

        }
    }
    public string Gas
    {
        get
        {
            if (chcGas.Checked == true)
            {
                string Gas = "SI";
                return Gas;
            }
            else
            {
                string Gas = "NO";
                return Gas;
            }

        }
    }
    public string TelefonoInmueble
    {
        get
        {
            if (chcTelefono.Checked == true)
            {
                string TelefonoInmueble = "SI";
                return TelefonoInmueble;
            }
            else
            {
                string TelefonoInmueble = "NO";
                return TelefonoInmueble;
            }

        }
    }
    public string Cloacas
    {
        get
        {
            if (chcCloacas.Checked == true)
            {
                string Cloacas = "SI";
                return Cloacas;
            }
            else
            {
                string Cloacas = "NO";
                return Cloacas;
            }

        }
    }
    public string Asfalto
    {
        get
        {
            if (chcAsfalto.Checked == true)
            {
                string Asfalto = "SI";
                return Asfalto;
            }
            else
            {
                string Asfalto = "NO";
                return Asfalto;
            }

        }
    }
    public string Dolar
    {
        get
        {
            if (chcDolar.Checked == true)
            {
                string Dolar = "U$S";
                return Dolar;
            }
            else
            {
                string Dolar = "";
                return Dolar;
            }
        }
    }
    public string Pesos
    {
        get
        {
            if (chcPesos.Checked == true)
            {
                string Pesos = "$";
                return Pesos;
            }
            else
            {
                string Pesos = "";
                return Pesos;
            }

        }
    }
    public string Descripcion { get { return txtDescripcion.Text; } }
    public byte[] FotoInmueble1
    {
        get
        {
            byte[] retorno = null;
            //string url = CargarImagenes();
            string savePath = string.Empty;
            string url = FileUpload1.FileName;
            if (url != "")
            {
                if (FileUpload1.HasFile)
                {
                    FileUpload1.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                }
                System.Drawing.Image img = System.Drawing.Image.FromFile(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    public byte[] FotoInmueble2
    {
        get
        {
            byte[] retorno = null;
            //string url = CargarImagenes();
            string savePath = string.Empty;
            string url = FileUpload2.FileName;
            if (url != "")
            {
                if (FileUpload2.HasFile)
                {
                    FileUpload2.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                }

                System.Drawing.Image img = System.Drawing.Image.FromFile(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    public byte[] FotoInmueble3
    {
        get
        {
            byte[] retorno = null;
            //string url = CargarImagenes();
            string savePath = string.Empty;
            string url = FileUpload3.FileName;
            if (url != "")
            {

                if (FileUpload3.HasFile)
                {
                    FileUpload3.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                }
                System.Drawing.Image img = System.Drawing.Image.FromFile(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    public byte[] FotoInmueble4
    {
        get
        {
            byte[] retorno = null;
            //string url = CargarImagenes();
            string savePath = string.Empty;
            string url = FileUpload4.FileName;
            if (url != "")
            {
                if (FileUpload4.HasFile)
                {
                    FileUpload4.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                }
                System.Drawing.Image img = System.Drawing.Image.FromFile(@"C:\Users\limoli.ANSV\Desktop\Leo\Elinmobiliario\Temporal\Imagenes\" + url + "");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    public byte[] FotoInmueble5
    {
        get
        {
            byte[] retorno = null;
            //string url = CargarImagenes();
            string savePath = string.Empty;
            string url = FileUpload5.FileName;
            if (url != "")
            {
                if (FileUpload5.HasFile)
                {
                    FileUpload5.SaveAs(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                }

                //System.Drawing.Image img = System.Drawing.Image.FromFile(PathImagenes + Server.HtmlEncode(FileUpload1.FileName));
                //System.Drawing.Image img = System.Drawing.Image.FromFile(@""+ PathImagenes + url +"'");
                System.Drawing.Image img = System.Drawing.Image.FromFile(System.Configuration.ConfigurationManager.AppSettings.Get("GuardarImagenesInmueble").ToString() + url + "");
                using (MemoryStream ms = new MemoryStream())
                {
                    img.Save(ms, System.Drawing.Imaging.ImageFormat.Jpeg);
                    retorno = ms.ToArray();
                }
                return retorno;
            }
            else
            {
                return retorno;
            }
        }
    }
    public string InmuebleEncontrado
    {
        set
        {
            txtNombreInmobiliaria.Text = value;
        }
    }
    public int Codigo
    {
        get
        {
            int codigo = int.Parse(txtCodigoInmobiliaria.Text);
            return codigo;

        }
    }
    #endregion
    #region Mensajes
    public void Error(string message)
    {
        MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, message);
    }
    public void ShowMessage(string message)
    {
        MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, message);
    }
    public void ShowError(Exception ex)
    {
        if (ex is CustomException)
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, ex.Message);
        }
        else if (ex is ApplicationException)
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Informacion, ex.Message);
        }
        else
        {
            MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje.Error, ex.Message);
        }
    }
    public void ShowQuestion(string message)
    {
        MostrarMensajeDialogoPregunta(Enumeraciones.TipoDeMensaje.Pregunta, message);
    }
    private void MostrarMensajeDialogo(Enumeraciones.TipoDeMensaje tipoDeMensaje, string mensaje)
    {
        IMensajeDeDialogo mensajeDeDialogo = (IMensajeDeDialogo)this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogo");
        System.Web.UI.Control mensajeR = this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogo") as System.Web.UI.Control;
        if (mensajeR != null)
        {
            mensajeR.Visible = true;
        }
        mensajeDeDialogo.MostrarMensajeDialogo(tipoDeMensaje, mensaje);
    }
    private void MostrarMensajeDialogoPregunta(Enumeraciones.TipoDeMensaje tipoDeMensaje, string mensaje)
    {
        IMensajeDeDialogoPregunta mensajeDeDialogo = (IMensajeDeDialogoPregunta)this.Page.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta");
        System.Web.UI.Control mensajeR = this.Master.FindControl("form1").FindControl("MensajeDeDialogoPregunta") as System.Web.UI.Control;
        if (mensajeR != null)
        {
            mensajeR.Visible = true;
        }
        mensajeDeDialogo.MostrarMensajeDeDialogoPregunta(tipoDeMensaje, mensaje);

    }
    #endregion
    protected void btnBuscar_Click1(object sender, EventArgs e)
    {
        try
        {
            _presenter.ValidarCodigoInmobiliarioEntrante();
            if (txtNombreInmobiliaria.Text != "")
            {
                HabilitarCampos();

            }
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
    private void HabilitarCampos()
    {
        cmbTipoTransaccion.Enabled = true;
        cmbTipoDeInmueble.Enabled = true;
        cmbProvincias.Enabled = true;
        lblHabitaciones.Visible = true;
        lblBaño.Visible = true;
        chcDolar.Enabled = true;
        chcPesos.Enabled = true;
        chcAgua.Enabled = true;
        chcAsfalto.Enabled = true;
        chcCloacas.Enabled = true;
        chcGas.Enabled = true;
        chcLuz.Enabled = true;
        chcTelefono.Enabled = true;
        txtValorInmueble.Enabled = true;
        txtCalle.Enabled = true;
        txtAltura.Enabled = true;
        txtLote.Enabled = true;
        txtDescripcion.Enabled = true;
        txtSuperficieCubierta.Enabled = true;
        txtCodigoInmobiliaria.Enabled = false;
        btnBuscar.Visible = false;
        FileUpload1.Enabled = true;
        FileUpload2.Enabled = true;
        FileUpload3.Enabled = true;
        FileUpload4.Enabled = true;
        FileUpload5.Enabled = true;

    }
    public void Limpiar()
    {
        cmbTipoDeInmueble.Enabled = false;
        cmbTipoTransaccion.Enabled = false;
        cmbProvincias.Enabled = false;
        cmbLocalidad.Enabled = false;
        cmbBarrio.Enabled = false;
        txtValorInmueble.Enabled = false;
        txtCalle.Enabled = false;
        txtAltura.Enabled = false;
        txtLote.Enabled = false;
        txtSuperficieCubierta.Enabled = false;
        cmbHabitaciones.Enabled = false;
        cmbBaño.Enabled = false;
        chcAgua.Enabled = false;
        chcAsfalto.Enabled = false;
        chcBalcon.Enabled = false;
        chcCloacas.Enabled = false;
        chcCocina.Enabled = false;
        chcComedor.Enabled = false;
        chcGas.Enabled = false;
        chcJardin.Enabled = false;
        chcLiving.Enabled = false;
        chcLuz.Enabled = false;
        chcPatio.Enabled = false;
        chcPiscina.Enabled = false;
        chcQuincho.Enabled = false;
        chcTelefono.Enabled = false;
        chcTerraza.Enabled = false;
        cmbHabitaciones.Enabled = false;
        cmbBaño.Enabled = false;
        chcAgua.Enabled = false;
        chcAsfalto.Enabled = false;
        chcBalcon.Enabled = false;
        chcCloacas.Enabled = false;
        chcCocina.Enabled = false;
        chcComedor.Enabled = false;
        chcGas.Enabled = false;
        chcJardin.Enabled = false;
        chcLiving.Enabled = false;
        chcLuz.Enabled = false;
        chcPatio.Enabled = false;
        chcPiscina.Enabled = false;
        chcQuincho.Enabled = false;
        chcTelefono.Enabled = false;
        chcTerraza.Enabled = false;
        chcDolar.Enabled = false;
        chcPesos.Enabled = false;
        btnVolver.Visible = true;
        btnRegistrar.Visible = false;
    }
    private string CargarImagenes()
    {
        string url = string.Empty;
        if (FileUpload1.HasFile)
            try
            {
                if (FileUpload1.PostedFile.ContentLength <= 50000)
                {
                    //url = "~/Temporal/" + FileUpload1.FileName;
                    url = PathImagenes + FileUpload1.FileName;
                    FileUpload1.SaveAs(MapPath(url));
                }
                else this.lblmessage.Text = "El tamaño del archivo debe ser menor a 50kbs";
            }

            catch (Exception ex)
            {
            }
        return url;
    }
    private string PathArchivo
    {
        get
        {
            string url = string.Empty;
            string path = string.Empty;
            if (System.Configuration.ConfigurationManager.AppSettings.Get("PathArchivo").ToString() != string.Empty)
            {
                path = System.Configuration.ConfigurationManager.AppSettings.Get("PathArchivo").ToString();


            }
            return path;
        }
        set
        {
            PathArchivo = value;
        }
    }
    private string PathImagenes
    {
        get
        {
            string url = string.Empty;
            string path = string.Empty;
            if (System.Configuration.ConfigurationManager.AppSettings.Get("PathImagenes").ToString() != string.Empty)
            {
                path = System.Configuration.ConfigurationManager.AppSettings.Get("PathImagenes").ToString();


            }
            return path;
        }
        set
        {
            PathImagenes = value;
        }
    }
    protected void btnVolver_Click(object sender, EventArgs e)
    {
        try
        {
            _presenter.Volver();
        }
        catch (Exception ex)
        {
            ShowError(ex);
        }
    }
}